#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<cstdio>
#include<algorithm>
#define debug(a) cout<<#a<<"="<<a<<endl;
using namespace std;
const int maxn=1e5+1000;
typedef long long LL;
inline LL read(){LL x=0,f=1;char ch=getchar();	while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}while (isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;}
LL a[maxn];
int main(void)
{
        cin.tie(0);std::ios::sync_with_stdio(false);
        LL n,l,x,y;cin>>n>>l>>x>>y;
        for(LL i=1;i<=n;i++) cin>>a[i];
        bool flag1=0;bool flag2=0;
        for(LL i=1;i<=n;i++){
            LL l1=1;LL r1=i;
            while(l1<r1){
                LL mid=(l1+r1+1)>>1;
                if(a[i]-a[mid]>=x) l1=mid;
                else r1=mid-1;
            }
            if(a[i]-a[l1]==x) flag1=1;
            LL l2=1;LL r2=i;
            while(l2<r2){
                LL mid=(l2+r2+1)>>1;
                if(a[i]-a[mid]>=y) l2=mid;
                else r2=mid-1;
            }
            if(a[i]-a[l2]==y) flag2=1;
       }
       if(flag1&&flag2){
            cout<<"0"<<"\n";
       }
       else if(flag1&&!flag2){
            cout<<"1"<<"\n";
            cout<<y<<"\n";
       }
       else if(!flag1&&flag2){
            cout<<"1"<<"\n";
            cout<<x<<"\n";
       }
       else if(!flag1&&!flag2){
        LL temp=x+y;
        bool flag3=0;
        for(LL i=1;i<=n;i++){
            LL l1=1;LL r1=i;
            while(l1<r1){
                LL mid=(l1+r1+1)>>1;
                if(a[i]-a[mid]>=temp) l1=mid;
                else r1=mid-1;
            }
            if(a[i]-a[l1]==temp) {
                flag3=1;
                cout<<"1"<<"\n";
                cout<<a[i]-y<<"\n";
                break;
            }
        }
        if(flag3==0){
            LL cnt=y-x;
            bool flag4=0;
            for(LL i=1;i<=n;i++){
                LL l2=1;LL r2=i;
                while(l2<r2){
                    LL mid=(l2+r2+1)>>1;
                    if(a[i]-a[mid]>=cnt) l2=mid;
                    else r2=mid-1;
                }
                if(a[i]-a[l2]==cnt){
                    if(a[l2]-x>=0){
                        flag4=1;
                        cout<<"1"<<"\n";
                        cout<<a[l2]-x<<"\n";
                        break;
                    }
                    else if(a[i]+x<=l){
                        flag4=1;
                        cout<<"1"<<"\n";
                        cout<<a[i]+x<<"\n";
                        break;
                    }
                }
            }
            if(flag4==0) {
                cout<<"2"<<"\n";
                cout<<x<<" "<<y<<"\n";
            }
        }
    }
return 0;
}
